Begin landing NEW_STRINGS work: common utilities.
authorrobertlipe <robertlipe@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Wed, 23 Oct 2013 03:02:13 +0000 (03:02 +0000)
committerrobertlipe <robertlipe@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Wed, 23 Oct 2013 03:02:13 +0000 (03:02 +0000)
git-svn-id: http://gpsbabel.googlecode.com/svn/trunk@4637 f51c46e8-681c-474f-0cfe-069cfd0219fb

gpsbabel/defs.h
gpsbabel/route.cc
gpsbabel/util.cc

index 5694da8b02612f37fdad8cd83fddfa614285e6a1..444dacb979da323b3dcb411e67545af875d84960 100644 (file)
@@ -712,10 +712,10 @@ geocache_container gs_mkcont(const QString& t);
 route_head* route_head_alloc(void);
 void route_add(waypoint*);
 void route_add_wpt(route_head* rte, waypoint* wpt);
-void route_add_wpt_named(route_head* rte, waypoint* wpt, const char* namepart, int number_digits);
+void route_add_wpt_named(route_head* rte, waypoint* wpt, const QString& namepart, int number_digits);
 void route_del_wpt(route_head* rte, waypoint* wpt);
 void track_add_wpt(route_head* rte, waypoint* wpt);
-void track_add_wpt_named(route_head* rte, waypoint* wpt, const char* namepart, int number_digits);
+void track_add_wpt_named(route_head* rte, waypoint* wpt, const QString& namepart, int number_digits);
 void track_del_wpt(route_head* rte, waypoint* wpt);
 void route_add_head(route_head* rte);
 void route_del_head(route_head* rte);
@@ -781,7 +781,7 @@ short_handle MKSHORT_NEW_HANDLE(DEBUG_PARAMS);
 #define mkshort( a, b) MKSHORT(a,b,__FILE__, __LINE__)
 #define mkshort_new_handle() MKSHORT_NEW_HANDLE(__FILE__,__LINE__)
 #endif
-char* mkshort_from_wpt(short_handle h, const waypoint* wpt);
+String mkshort_from_wpt(short_handle h, const waypoint* wpt);
 void mkshort_del_handle(short_handle* h);
 void setshort_length(short_handle, int n);
 void setshort_badchars(short_handle,  const char*);
@@ -1018,7 +1018,7 @@ const char* get_cache_icon(const waypoint* waypointp);
 const char* gs_get_cachetype(geocache_type t);
 const char* gs_get_container(geocache_container t);
 char* xml_entitize(const char* str);
-char* html_entitize(const char* str);
+char* html_entitize(const QString& str);
 char* strip_html(const utf_string*);
 char* strip_nastyhtml(const QString& in);
 char* convert_human_date_format(const char* human_datef);      /* "MM,YYYY,DD" -> "%m,%Y,%d" */
index 5b469575ca323d04a9330ef5e51fc46022169ff4..1788d8fc669dfb7d7cd1f2cc86a3ae9ad8a72de1 100644 (file)
@@ -77,12 +77,14 @@ route_head_alloc(void)
 static void
 any_route_free(route_head* rte)
 {
+#if !NEW_STRINGS
   if (rte->rte_name) {
     xfree(rte->rte_name);
   }
   if (rte->rte_desc) {
     xfree(rte->rte_desc);
   }
+#endif
   waypt_flush(&rte->waypoint_list);
   if (rte->fs) {
     fs_chain_destroy(rte->fs);
@@ -151,7 +153,11 @@ common_route_by_name(queue* routes, const char* name)
 
   QUEUE_FOR_EACH(routes, elem, tmp) {
     rte = (route_head*) elem;
+#if NEW_STRINGS
+    if (rte->rte_name == name) {
+#else
     if (0 == strcmp(rte->rte_name, name)) {
+#endif
       return rte;
     }
   }
@@ -172,20 +178,21 @@ route_find_track_by_name(const char* name)
 }
 
 static void
-any_route_add_wpt(route_head* rte, waypoint* wpt, int* ct, int synth, const char* namepart, int number_digits)
+any_route_add_wpt(route_head* rte, waypoint* wpt, int* ct, int synth, const QString& namepart, int number_digits)
 {
   ENQUEUE_TAIL(&rte->waypoint_list, &wpt->Q);
   rte->rte_waypt_ct++; /* waypoints in this route */
   if (ct) {
     (*ct)++;
   }
-  if (synth && !wpt->shortname) {
 #if NEW_STRINGS
+  if (synth && wpt->shortname.isEmpty()) {
     char *t;
-    xasprintf(&t, "%s%0*d", namepart, number_digits, *ct);
+    xasprintf(&t, "%s%0*d", CSTRc(namepart), number_digits, *ct);
     wpt->shortname = t;
 #else
-    xasprintf(&wpt->shortname,"%s%0*d", namepart, number_digits, *ct);
+  if (synth && !wpt->shortname) {
+    xasprintf(&wpt->shortname,"%s%0*d", CSTR(namepart), number_digits, *ct);
 #endif
     wpt->wpt_flags.shortname_is_synthetic = 1;
   }
@@ -193,7 +200,7 @@ any_route_add_wpt(route_head* rte, waypoint* wpt, int* ct, int synth, const char
 }
 
 void
-route_add_wpt_named(route_head* rte, waypoint* wpt, const char* namepart, int number_digits)
+route_add_wpt_named(route_head* rte, waypoint* wpt, const QString& namepart, int number_digits)
 {
   // First point in a route is always a new segment.
   // This improves compatibility when reading from
@@ -213,7 +220,7 @@ route_add_wpt(route_head* rte, waypoint* wpt)
 }
 
 void
-track_add_wpt_named(route_head* rte, waypoint* wpt, const char* namepart, int number_digits)
+track_add_wpt_named(route_head* rte, waypoint* wpt, const QString& namepart, int number_digits)
 {
   // First point in a track is always a new segment.
   // This improves compatibility when reading from
@@ -239,7 +246,11 @@ route_find_waypt_by_name(route_head* rh, const char* name)
 
   QUEUE_FOR_EACH(&rh->waypoint_list, elem, tmp) {
     waypoint* waypointp = (waypoint*) elem;
+#if NEW_STRINGS
+    if (waypointp->shortname == name) {
+#else
     if (0 == strcmp(waypointp->shortname, name)) {
+#endif
       return waypointp;
     }
   }
@@ -590,7 +601,10 @@ void track_recompute(const route_head* trk, computed_trkdata** trkdatap)
   double tot_hrt = 0.0;
   int pts_cad = 0;
   double tot_cad = 0.0;
+#if NEW_STRINGS
+#else
   char tkptname[100];
+#endif
   computed_trkdata* tdata = (computed_trkdata*)xcalloc(1, sizeof(computed_trkdata));
 
   if (trkdatap) {
@@ -693,10 +707,15 @@ void track_recompute(const route_head* trk, computed_trkdata** trkdatap)
       }
     }
     prev = thisw;
+#if NEW_STRINGS
+    if (thisw->shortname.isEmpty()) {
+      thisw->shortname = QString("%1-%2").arg(trk->rte_name).arg(tkpt);
+#else
     if (!thisw->shortname || !thisw->shortname[0]) {
       snprintf(tkptname, sizeof(tkptname), "%s-%d",
                trk->rte_name ? CSTRc(trk->rte_name) : "" , tkpt);
       thisw->shortname = xstrdup(tkptname);
+#endif
     }
     tkpt++;
   }
index 20e82afcaf18c8eb49bbd5004a4c148bc0634b9f..891cf3381dbe6bf528dd65b3c175ca677b25357e 100644 (file)
@@ -279,12 +279,15 @@ xasprintf(char** strp, const char* fmt, ...)
 }
 #if NEW_STRINGS
 int
-xasprintf(String* strp, const char* fmt, ...)
+xasprintf(QString* strp, const char* fmt, ...)
 {
   va_list args;
   int res;
   va_start(args, fmt);
-  res = xvasprintf(&strp->s_, fmt, args);
+  char *cstrp;
+  res = xvasprintf(&cstrp, fmt, args);
+  *strp = cstrp;
+  xfree(cstrp);
   va_end(args);
 
   return res;
@@ -1735,6 +1738,10 @@ char* html_entitize(const char* str)
 {
   return entitize(str, 1);
 }
+char* html_entitize(const QString& str)
+{
+  return entitize(CSTR(str), 1);
+}
 
 /*
  * xml_tag utilities